import os

# 通过字典记录每个文件类型的个数
file_dict = {}


# 获取文件的后缀名
def get_file_extension(file_name):
    name_list = file_name.split('.')
    if len(name_list) <= 1:  # 没有后缀名的情况
        txt = '空白后缀'
    else:
        txt = name_list[-1]
    return txt


def get_file_size(file_path, file_size):
    # 获取当前目录下得文件
    file_list = os.listdir(file_path)

    # 遍历文件
    for line in file_list:
        path = os.path.join(file_path, line)  # 合成文件路径
        # 判断是文件还是文件夹
        if os.path.isdir(path):
            file_size = get_file_size(path, file_size)
            if 'dir' in file_dict.keys():
                file_dict[dir] = file_dict[dir] + 1
            else:
                file_dict[dir] = 1

        elif os.path.isfile(path):
            # 这是一个文件，计算大小
            file_size = file_size + os.path.getsize(path)
            # 获取后缀名，添加到字典中
            txt = get_file_extension(line)
            if txt in file_dict.keys():
                file_dict[txt] = file_dict[txt] + 1
            else:
                file_dict[txt] = 1
    return file_size


if __name__ == '__main__':
    # 需要遍历的目录
    file_dir = 'D:\\编程工具文件夹'

    # 清空字典
    file_dict = {}

    # 文件大小
    file_size = 0

    # 先判断该目录是否存在
    if not os.path.exists(file_dir):
        print('目录不存在：{0}'.format(file_dir))
    else:
        size = get_file_size(file_dir, file_size)
        print('=' * 20, '当前目录信息', '=' * 20)
        print('该目录大小为：{0}字节→→{1}K→→{2}M→→{3}G'.format(size,
                                                      round(size / 1024, 1),
                                                      round(size / 1024 / 1024, 2),
                                                      round(size / 1024 / 1024 / 1024, 2)))
        print('')
        print('=' * 20, '以下是文件个数信息', '=' * 20)
        for key, value in file_dict.items():
            if key == 'dir':
                key = '文件夹'
            print('{0}个数：{1}'.format(key, value))
